package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import javax.servlet.annotation.MultipartConfig;

/**
 * Servlet implementation class ABCServlet
 */
@WebServlet("/ABCServlet")
@MultipartConfig 
public class ABCServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ABCServlet() {
    	System.out.println("执行ABCServlet的构造方法！");
        
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("执行ABCServlet的init()初始化方法！");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("执行ABCServlet的destroy销毁方法！");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//throws ServletException, IOException{
		//	System.out.println("执行ABCServlet的doGet()方法！");
		//	System.out.println("Web项目的根目录或部署后绝对物理路径是" + request.getServletContext().getRealPath(""));
			//System.out.println("ABCServlet的doGet()方法执行")
		//}
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		 request.setCharacterEncoding("UTF-8");
		    // 设置响应编码格式
		    response.setContentType("text/html;charset=UTF-8");
		    // 获取请求参数
		    String name = request.getParameter("name");
		    // 获取响应输出流
			response.getWriter().append("<h1>你好！" + name + "</h1>");
		    // 获取多个同名参数
		    String[] hobbies = request.getParameterValues("hobby");
		    if (hobbies != null) {
		        response.getWriter().append("<h2>爱好：</h2>");
		        response.getWriter().append("<ul>");
		        for (String hobby : hobbies) {
		            response.getWriter().append("<li>" + hobby + "</li>");
		        }
		        response.getWriter().append("</ul>");
		    }
		    String uploadPath = "D:\\WG2403\\上传文件";
		     // 获取上传的文件
		     Collection<Part> parts = request.getParts();
		     response.getWriter().append("<h2>上传的文件有：</h2>");
		     for (Part part : parts) {
		         // 获取上传文件的文件名
		         String fileName = part.getSubmittedFileName();
		         // 确保文件存在
		         if (fileName != null && !fileName.isEmpty()) {
		             // 将文件写入到指定路径
		             part.write(uploadPath + fileName);
		             part.delete();

		             // 返回上传文件成功的信息
		             response.getWriter().append("<p>" + fileName + "</p>");
		         }
		     }    
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		 // 设置请求编码格式
	     request.setCharacterEncoding("UTF-8");
	     // 设置响应编码格式
	     response.setContentType("text/html;charset=UTF-8");
	     
	  // 手动设置响应行
	     response.setStatus(200);
	     // 获取响应输出流
	     PrintWriter writer = response.getWriter();
	     // 生成HTML代码
	     writer.append("<!DOCTYPE html>")
	             .append("<html>")
	             .append("<head>")
	             .append("<title>HTTP响应</title>")
	             .append("</head>")
	             .append("<body>")
	             .append("<h1>HTTP响应</h1>")
	             .append("<h1>你瞅啥</h1>")
	             .append("</body>")
	             .append("</html>");
	     // 获取请求参数
	     String name = request.getParameter("name");
	     // 获取响应输出流
	     response.getWriter().append("<h1>你好！" + name + "</h1>");
	     // 获取多个同名参数
	     String[] hobbies = request.getParameterValues("hobby");
	     if (hobbies != null) {
	         response.getWriter().append("<h2>爱好：</h2>");
	         response.getWriter().append("<ul>");
	         for (String hobby : hobbies) {
	             response.getWriter().append("<li>" + hobby + "</li>");
	         }
	         response.getWriter().append("</ul>");
	     }
	     // 设置上传文件的保存路径
	     String uploadPath = "D:\\WG2403\\上传路径\\";
	     // 获取上传的文件
	     Collection<Part> parts = request.getParts();
	     response.getWriter().append("<h2>上传的文件有：</h2>");
	     for (Part part : parts) {
	         // 获取上传文件的文件名
	         String fileName = part.getSubmittedFileName();
	         // 确保文件存在
	         if (fileName != null && !fileName.isEmpty()) {
	             // 将文件写入到指定路径
	             part.write(uploadPath + fileName);
	             part.delete();

	             // 返回上传文件成功的信息
	             response.getWriter().append("<p>" + fileName + "</p>");
	         }
	     }
	}
}
